package sistema;

import controloBD.AcessoBD;
import controloBD.QueryResult;
import java.util.Hashtable;
import java.util.List;
import java.util.Vector;

public class Evento {


    private Long id_evento;
    private Long id_competicao;
    private Long id_equipa1;
    private Long id_equipa2;
    private String data;
    private double odd1;
    private double odd2;
    private double oddx;
    private double oddOver;
    private double oddUnder;
    private String estado;

    public Evento(Long id, Long id_competicao, Long id_equipa1, Long id_equipa2, String data,
            double odd1, double odd2, double oddx, double oddOver, double oddUnder, String estado) {
        this.id_evento = id;
        this.id_equipa1 = id_equipa1;
        this.id_equipa2 = id_equipa2;
        this.data = data;
        this.odd1 = odd1;
        this.odd2 = odd2;
        this.oddx = oddx;
        this.oddOver = oddOver;
        this.oddUnder = oddUnder;

        this.estado = "ABERTO";
    }

    private Evento(Vector tabela) {
        this.id_evento = (Long) tabela.get(0);
        this.id_equipa1 = (Long) tabela.get(1);
        this.id_equipa2 = (Long) tabela.get(2);
        this.data = (String) tabela.get(3);
        this.odd1 = (Double) tabela.get(4);
        this.odd2 = (Double) tabela.get(5);
        this.oddx = (Double) tabela.get(6);
        this.oddOver = (Double) tabela.get(7);
        this.oddUnder = (Double) tabela.get(8);

    }

    /**
     * @return the id_evento
     */
    public Long getId_evento() {
        return id_evento;
    }

    /**
     * @return the id_competicao
     */
    public Long getId_competicao() {
        return id_competicao;
    }

    /**
     * @param id_competicao the id_competicao to set
     */
    public void setId_competicao(Long id_competicao) {
        this.id_competicao = id_competicao;
    }

    /**
     * @return the id_equipa1
     */
    public Long getId_equipa1() {
        return id_equipa1;
    }

    /**
     * @param id_equipa1 the id_equipa1 to set
     */
    public void setId_equipa1(Long id_equipa1) {
        this.id_equipa1 = id_equipa1;
    }

    /**
     * @return the id_equipa2
     */
    public Long getId_equipa2() {
        return id_equipa2;
    }

    /**
     * @param id_equipa2 the id_equipa2 to set
     */
    public void setId_equipa2(Long id_equipa2) {
        this.id_equipa2 = id_equipa2;
    }

    /**
     * @return the data
     */
    public String getData() {
        return data;
    }

    /**
     * @param data the data to set
     */
    public void setData(String data) {
        this.data = data;
    }

    /**
     * @return the odd1
     */
    public double getOdd1() {
        return odd1;
    }

    /**
     * @param odd1 the odd1 to set
     */
    public void setOdd1(double odd1) {
        this.odd1 = odd1;
    }

    /**
     * @return the odd2
     */
    public double getOdd2() {
        return odd2;
    }

    /**
     * @param odd2 the odd2 to set
     */
    public void setOdd2(double odd2) {
        this.odd2 = odd2;
    }

    /**
     * @return the oddx
     */
    public double getOddx() {
        return oddx;
    }

    /**
     * @param oddx the oddx to set
     */
    public void setOddx(double oddx) {
        this.oddx = oddx;
    }

    /**
     * @return the oddOver
     */
    public double getOddOver() {
        return oddOver;
    }

    /**
     * @param oddOver the oddOver to set
     */
    public void setOddOver(double oddOver) {
        this.oddOver = oddOver;
    }

    /**
     * @return the oddUnder
     */
    public double getOddUnder() {
        return oddUnder;
    }

    /**
     * @param oddUnder the oddUnder to set
     */
    public void setOddUnder(double oddUnder) {
        this.oddUnder = oddUnder;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public void encerraEvento(Evento e) {
        e.estado = "FECHADO";
    }

    public static void insere(Hashtable<String, String> params) throws Exception {
        // abre uma conexao a bd
        AcessoBD conexao = new AcessoBD();
        String qryName = new String("inserir_novo_evento");
        conexao.executeUpdate(qryName, params);
        conexao.closeBD();
    }

    public static List<Evento> devolveTodos() throws Exception {
        AcessoBD conexao = new AcessoBD();
        String qryName = new String("visualizar_todos");
        QueryResult qr = new QueryResult();
        qr = conexao.executeSelect(qryName, null);
        conexao.closeBD();
        return (List<Evento>) new <List>Evento(qr.tabela());
    }

    public static List<Evento> devolveEventosModalidade(Long id_modalidade) throws Exception {

        AcessoBD conexao = new AcessoBD();
        Hashtable<String, String> dadosEvento = new Hashtable<String, String>();
        dadosEvento.put("var_idmodalidade", id_modalidade.toString());
        String qryName = new String("evento_por_id_modalidade");
        QueryResult qr = new QueryResult();
        qr = conexao.executeSelect(qryName, dadosEvento);
        conexao.closeBD();
        return (List<Evento>) new <List>Evento(qr.tabela());
    }

    public static Evento devolvePorId(Long id_modalidade) throws Exception {

        AcessoBD conexao = new AcessoBD();
        Hashtable<String, String> dadosEvento = new Hashtable<String, String>();
        dadosEvento.put("var_idmodalidade", id_modalidade.toString());
        String qryName = new String("evento_por_id_modalidade");
        QueryResult qr = new QueryResult();
        qr = conexao.executeSelect(qryName, dadosEvento);
        conexao.closeBD();
        return new Evento(qr.tabela());
    }

    public static void altera(Hashtable<String, String> params) throws Exception {
        // abre uma conexao a bd
        AcessoBD conexao = new AcessoBD();
        String qryName = "altera_evento";
        conexao.executeUpdate(qryName, params);
        conexao.closeBD();
    }
}
